New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update: stricter array index check in no-magic-numbers (fixes #12845) #12851
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for working on this! I think these changes are good candidates for updating the documentation (particularly around the max length index access, as I think that's something that isn't immediately clear).
@@ -6,6 +6,7 @@ | |||
"use strict"; | |||
|
|||
const { isNumericLiteral } = require("./utils/ast-utils"); | |||
const MAX_ARRAY_LENGTH = 2 ** 32 - 1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for naming this so that it's not a magic number, but I wonder if even more context would be helpful here? MDN has some documentation we can use for this (and refer to in the docs)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Completely agree 👍 I'll update the docs.
Did you also mean to add more explanation in the code? There is already something in the description for function isArrayIndex()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's also interesting that the rule itself wouldn't allow this line in its own code.
This was proposed in #12535
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated the docs and comments in the code. I hope this specifies the option well and that it's explained in an understandable way, all suggestions are welcome!
Also, is using <sup></sup>
okay? Couldn't find any examples in other documents.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, is using
<sup></sup>
okay?
According to the Eleventy documentation, it looks like it should work! I think we'll just want to double check the site after the next release. :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<sup></sup>
232 looks good on site 🎉
https://eslint.org/docs/7.0.0/rules/no-magic-numbers#ignorearrayindexes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As always, thank you for the well documented code and tests! LGTM.
Prerequisites checklist
What is the purpose of this pull request? (put an "X" next to item)
[X] Bug fix #12845
This bug fix produces more warnings.
What changes did you make? (Give an overview)
no-magic-numbers
with optionignoreArrayIndexes: true
was allowing all numbersx
ina[x]
, assuming they're array indexes, like:a[-1], a[2.5], a[1e500] ...
This PR changes the
ignoreArrayIndexes
option to allow only those numbers that will result in a valid array index name:"0", "1" ... "4294967294"
.All notations are still allowed, as long as the expression evaluates and coerces to a valid index.
I also renamed some unrelated functions and removed some extra params.
Is there anything you'd like reviewers to focus on?
Added max array length check, too. That wasn't mentioned in the original issue, is it okay?